package com.guomei.bean.curse.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.guomei.bean.User;
import com.guomei.bean.curse.CourseCategory;
import com.guomei.bean.curse.CourseChapter;
import com.guomei.bean.exam.domain.Exam;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 课程详情VO类，包含课程信息和绑定的试卷信息
 */
@Data
public class CourseDetail {
    /**
     * 课程ID
     */
    private Long id;

    /**
     * 课程名称
     */
    private String courseName;

    /**
     * 封面图片
     */
    private String coverImage;

    /**
     * Banner图片
     */
    private String bannerImage;

    /**
     * 课程描述
     */
    private String description;

    /**
     * 授课老师ID
     */
    private Long teacherId;

    /**
     * 授课老师信息
     */
    private User teacher;

    /**
     * 课程章节信息
     */
    private List<CourseChapter> chapters;

    /**
     * 课程价格
     */
    private BigDecimal price;

    /**
     * 优惠价格
     */
    private BigDecimal salePrice;

    /**
     * 优惠结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime discountEndTime;

    /**
     * 总时长(分钟)
     */
    private Integer duration;

    /**
     * 状态(0-草稿,1-已发布,2-下架)
     */
    private Short status;

    /**
     * 课程类型(1-公开课,2-付费课,3-专研班,4-专修课)
     */
    private Short courseType;

    /**
     * 是否支持试听(0-否,1-是)
     */
    private Short canTry;

    /**
     * 试听时长(分钟)
     */
    private Integer tryDuration;

    /**
     * 分销比例(%)
     */
    private BigDecimal distributionRatio;

    /**
     * 适合人群
     */
    private String suitablePeople;

    /**
     * 学习流程
     */
    private String learningProcess;

    /**
     * 常见问题
     */
    private String faq;

    /**
     * 评分
     */
    private BigDecimal score;

    /**
     * 学员数量
     */
    private Integer studentCount;

    /**
     * 分享标题
     */
    private String shareTitle;

    /**
     * 分享描述
     */
    private String shareDescription;

    /**
     * 分享图片
     */
    private String shareImage;

    /**
     * 试听视频
     */
    private String tryVideoUrl;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createdTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime updatedTime;

    /**
     * 用户是否已购买（非数据库字段，用于前端显示）
     */
    private Boolean buyed;

    /**
     * 绑定的试卷信息（课程关联的考试）
     */
    private List<Exam> exams;

    /**
     * 课程镜像
     */
    private String courseMirrorUrl;

    /**
     * 类别信息
     */
    private CourseCategory category;

    /**
     * 课程镜像的图片字段
     */
    private String courseMirrorImg;

}
